<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	function pt(str){
		document.write("<br>"+str);		
	}
	
	var flight={
		airline : "Oceanic",
		number : 815,
		departure:{
			IATA:"SYD",
			time:"2004-09-22 12:20",
			city:"Los Angeles"
		}

	};
	flight.equipment = {      //존재하지않는  속성에 값을 추가 하면 속성이 자동 추가 된다. 
			model:'Boeing 777'
		};
	flight.status = "overdue";
	
	pt(typeof flight.number); //number
	pt(typeof flight.status); //string
	pt(typeof flight.airline); //string
	pt(typeof flight.manifest); //undefined
	
	pt(typeof flight.toString); //function   ->프로토타입 체인상에 있는 속성을 반환할수도 있다. 
	pt(typeof flight.constructor); //function
	
	pt(flight.hasOwnProperty('number'))// true ->hasOwnProperty메소드는 체인상에 있는 속성을 반환하지 않는다. 
	pt(flight.hasOwnProperty('constructor'))//false
	
	var  name ;
	pt("flight 속성  열거");
	for(name in flight){
		pt(name+":"+flight[name]);
	}
	
	pt("flight 속성중 function 제외");
	for(name in flight){
		if(typeof flight[name] !== "function"){   //function type을 제외한 속성을 열거
			pt(name+":"+flight[name]);
		}
	}
	
	pt("flght속성중 프로토타입 체인에 있는 속성을 제외한 열거");
	for(name in flight){
		if(flight.hasOwnProperty(name)){
			pt(name+":"+flight[name]);
		}
	}
	
	
	// 속성 삭제 
	//prototype 속성에는 영향이 없음. 똑같은  속성이 프로토 타입에 있을경우 속성을 조회하면 프로토타입의 속성을 반환한다. 
	//자바스크립트 속성조회 순서 : 해당객체->프로토타입->Object 모두 없으면 undefined return
	
	delete flight.status;   
	

	
	
	
</script>
</head>
<body>

</body>
</html>